package com.kevinkk.linklist;

/**
 * 给你两个单链表的头节点 headA 和 headB ，请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点，返回 null
 *
 * 如果这两个链表相交的话
 * p1 和 p2 走过的路程都是一样的，它们会在中间相遇
 * 如果不相交的哈
 * 它们走过的路程也是一样的，只是最后都走到了对方的末尾，都为 null
 */

public class IntersectionOfTwoLinkedLists {
    public class Solution {
        public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
            ListNode p1 = headA, p2 = headB;
            while (p1 != p2) {
                p1 = (p1 == null ? headB : p1.next);
                p2 = (p2 == null ? headA : p2.next);
            }
            return p1;
        }
    }
}
